package lang;

/**
 * @Author Zan
 * @Create 2024/4/20 16:18
 * @Description :
 */
public class String {
    // 双亲委派机制：为了安全
    // 当运行一个应用程序时，会先向上查找（如果找到就直接执行，不会向下执行）
    // 1. APP --> EXC --> BOOT(最终执行根加载器的)
    // 如果BOOT没有这个类，那就去EXC找，如果没有，才在APP中找

    public java.lang.String toString() {
        return "Hello";
    }

    public static void main(String[] args) {
        String s = new String();
        System.out.println(s.getClass().getClassLoader());
        s.toString(); // 无法运行，main方法都在这里了，但无法运行，那说明Java程序走的不是这个main方法

        new Thread().start();
    }

    /**
     * 1.类加载器收到类加载的请求
     * 2.会将这个请求向上委托给父类的加载器去完成，一直向上委托（APP->EXT->BOOT），直到启动类加载器 BOOT
     * 3.启动类加载器会去检查是否能够加载当前这个类，能加载就结束，使用当前的加载器，否则，抛出异常，通知子加载器进行加载
     * 4.重复步骤3
     * 报错：Class Not Found~
     *
     * null：java调用不到（因为是用C、C++写的）
     * Java = C++: 去掉繁琐的东西，指针，内存管理 （即C++--）
     */
}
